#ifndef __AW_AGENT
#define __AW_AGENT

class AW_Agent : public AW_Entity {

public:
	AW_Agent();
	AW_Agent(Ontology *o,FTKBase *m,AW_Body *bdy,AW_Sensor *sens,AW_Brain *brn);
	AW_Agent(FILE *fp);
	virtual ~AW_Agent();

	Symbol *get_AgentName(void) {return AgentName;}
	Vector get_pos(void) {return Body->get_pos();}
	Vector get_dir(void) {return Body->get_dir();}
	AW_Body *get_Body(void) {return Body;}
	AW_Sensor *get_Sensor(void) {return Sensor;}


	virtual bool load(FILE *fp);
	virtual bool save(FILE *fp);

	virtual bool is_a(char *c);
	virtual bool is_a(Symbol *c);

	virtual void pause(void);
	virtual void unpause(void);

	void draw(void);
	void localdraw(void);
	void draw_shadows(float lightpos[4]);
	void actualize(float time,float timeinc,AW_World *w);

	void receive_msg(AW_Message *m);

	virtual bool MouseClick(int x,int y);
	virtual bool KeyboardEvent(int key);

protected:
	Symbol *AgentName;

	Ontology *O;
	FTKBase *Memory;

	AW_Body *Body;
	AW_Sensor *Sensor;
	AW_Brain *Brain;

private:


}; /* AW_Agent */ 

#endif

